#ifndef _PRIORITY_QUEUE_
#define _PRIORITY_QUEUE_

#include <stdlib.h>
#include <stdio.h>

typedef struct queue_data *queue;

typedef int element_t;

typedef enum boolean {false = 0,true} bool;

queue create(void);
/*this fuction creates a priority queue*/
/*in case of failure returns NULL*/


void clear(queue target_queue);
/*this fuction clears the queue*/


void delete(queue target_queue);
/*this fuction deletes the queue*/


unsigned int size(queue);
/*this fuction returns the queue's size*/


bool push(queue target_queue, element_t data);
/*this fuction pushes the element in the queue with increasing order*/
/*in case of failure returns false*/


bool pop(queue target_queue);
/*this fuction pops the front element from the queue*/
/*in case of failure returns false*/



bool front(queue target_queue,element_t *data);
/*this fuction returns the front element in data*/
/*in case of failure returns false*/


bool back(queue target_queue,element_t *data);
/*this fuction rerurns the back element in data*/
/*in case of failuer returns false*/

#endif
